package com.yonxao.demo.crud.service;

import com.yonxao.demo.crud.annotation.valid.Save;
import com.yonxao.demo.crud.annotation.valid.Update;
import com.yonxao.demo.crud.entity.Student;
import com.yonxao.demo.crud.pojo.query.ListQuery;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 学生 service api
 *
 * @author xiaosaguo
 * @date 2021/03/15
 */
@Validated
public interface StudentService {

    /**
     * 根据 id 查询
     *
     * @param id 主键
     * @return 实体信息
     */
    Student getById(@NotNull @Min(1) Long id);


    /**
     * 分页查询
     *
     * @param query 分页及条件参数
     * @return 分页记录
     */
    List<Student> list(ListQuery query);

    /**
     * 新增
     *
     * @param student 要新增的实体信息
     * @return 新增后的实体信息
     */
    @Validated(Save.class)
    Student insert(@Valid Student student);

    /**
     * 更新
     *
     * @param student 要更新的实体信息
     * @return 数据库中是否有实体被跟新了
     */
    @Validated(Update.class)
    boolean update(@Valid Student student);

    /**
     * 根据 id 删除
     *
     * @param id 主键
     * @return 数据库中是否有实体被删除了
     */
    boolean remove(@NotNull @Min(1) Long id);
}
